#ifndef __CINETIC__VIEW_H__
#define __CINETIC__VIEW_H__
#pragma once

#include "Representation.h"
#include "Scene.h"

namespace Cinetic
{
	class View : public SceneObserver
	{
	public:
		virtual std::shared_ptr<Representation>	create_representation( std::weak_ptr<Object> ) = 0;
		virtual std::shared_ptr<Representation>	get_representation( std::weak_ptr<Object> g );

    public: //SceneObserver interface
        virtual void on_game_object_added( std::weak_ptr<GameObject> go );
        virtual void on_game_object_removed( std::weak_ptr<GameObject> go );
        virtual void on_component_added( std::weak_ptr<GameObject> go, std::weak_ptr<Component> c);
        virtual void on_component_removed( std::weak_ptr<GameObject> go, std::weak_ptr<Component> c);
    
    private:
        std::vector<std::shared_ptr<Representation>>    m_representation_list;
	};
};

#endif